package models

import (
	"time"

	"gorm.io/gorm"
)

// 永远也不要管表的id，而是表的其他唯一标识字段

// 就诊等待队列
// 就诊等待队列的唯一标识字段是就诊等待队列编码
type PatientQueue struct {
	gorm.Model
	PatientQueueId   int    `gorm:"type:int;not null" json:"patient_queue_id"`                   // 就诊等待队列ID
	PatientQueueCode string `gorm:"type:varchar(100);not null;unique" json:"patient_queue_code"` // 就诊等待队列编码
	// 就诊队列也应该关联到一个患者id
	PatientID           int    `gorm:"type:int;not null" json:"patient_id"`                     // 患者ID
	DoctorID            int    `gorm:"type:int;not null" json:"doctor_id"`                      // 医生ID
	Name                string `gorm:"type:varchar(100);not null" json:"name"`                  // 姓名
	MedicalRecordNumber string `gorm:"type:varchar(100);not null" json:"medical_record_number"` // 门诊病历号
	Gender              string `gorm:"type:varchar(10);not null" json:"gender"`                 // 性别
	Age                 int    `gorm:"type:int;not null" json:"age"`                            // 年龄
	Occupation          string `gorm:"type:varchar(100);not null" json:"occupation"`            // 职业
	ContactAddress      string `gorm:"type:varchar(100);not null" json:"contact_address"`       // 联系地址
	ContactPhone        string `gorm:"type:varchar(100);not null" json:"contact_phone"`         // 联系电话
	// 身份证号唯一,限制位数，中国身份证号18位
	IDNumber                string     `gorm:"type:varchar(18);not null;unique" json:"id_number"`      // 身份证号, todo:身份正好限制位数
	FirstVisitTime          time.Time  `gorm:"type:datetime;not null" json:"first_visit_time"`         // 首诊时间
	ConsultationTime        *time.Time `gorm:"type:datetime" json:"consultation_time"`                 // 接诊时间
	DiagnosisResult         string     `gorm:"type:varchar(100);not null" json:"diagnosis_result"`     // 诊断结果
	InitialOrFollowUp       string     `gorm:"type:varchar(100);not null" json:"initial_or_follow_up"` // 初复诊情况（初诊/复诊）
	RegistrationDoctor      string     `gorm:"type:varchar(100);not null" json:"registration_doctor"`  // 挂号医生
	IsImmediateConsultation bool       `gorm:"type:bool;not null" json:"is_immediate_consultation"`    // 是否马上接诊
	IsConsultationStopped   bool       `gorm:"type:bool;not null" json:"is_consultation_stopped"`      // 是否停止接诊
}
